home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr26 / dosm21.zip / DOSMAX.DOC next >
Text File  |  1993-06-01  |  34KB  |  740 lines

  1.  
  2. ================================================================================
  3.        DOSMAX.EXE :  Ver. 2.1, Copyright (1992,93) by Philip B. Gardner
  4. ================================================================================
  5.  
  6.   DOSMAX.EXE is a device driver which will maximize the use of low memory
  7.   by moving MS-DOS 3.1 and above system data to upper memory blocks provided
  8.   by your upper memory manager.  It is not necessary to use any other
  9.   programs to create upper memory data types like FILES, BUFFERS, FCBS,
  10.   or LASTDRIV from Quarterdeck's QEMM386.  These data types are referred
  11.   to as "sub-segments" in the rest of this document.
  12.  
  13.   In addition, if you are a DOS 5.0 or above user and are loading DOS high,
  14.   then DOSMAX can prevent DOS from loading into the HMA and move the DOS
  15.   kernel to an upper memory block.  This improves performance and allows
  16.   programs which use the HMA more efficiently to utilize the HMA instead.
  17.   Such programs include Microsoft WINDOWS and Quarterdeck's DESQVIEW.
  18.  
  19.   Version 2.0 now requires the device driver STOPMAX.SYS to prevent DOS from
  20.   loading into the HMA (see STOPMAX.DOC).  The DOSMAX driver then moves
  21.   the kernel into upper memory at the proper time.
  22.  
  23.   DOSMAX can also move a portion of COMMAND.COM into an upper memory block
  24.   instead of the HMA.  This feature recovers space in low memory which is
  25.   available when DOS is in the HMA.  Version 2.0 now requires the /C+ switch
  26.   to enable this feature rather than /A0 to disable it.
  27.  
  28.   Support is automatically provided for Microsoft WINDOWS 3.x so that all
  29.   FILES in your CONFIG.SYS can be loaded high.  Normally this would prevent
  30.   WINDOWS from running, but the problem is circumvented.  Version 2.0 has
  31.   changed the support algorithum significantly, see /W+ option below.
  32.  
  33.   Support is provided for:
  34.  
  35.     * moving all DOS's sub-segments types into upper memory
  36.     * moving DOS's SYSTEM block (kernel) into upper memory (STOPMAX installed)
  37.     * supporting WINDOWS start-up even if all FILES= are in upper memory
  38.     * moving a portion of COMMAND.COM into high memory instead of the HMA
  39.     * DOS Versions 3.1 - 3.31, DOS 4.x, DOS 5.x, and DOS 6.x (or better?)
  40.  
  41.   DOSMAX automatically moves all the data that can be moved dependent only
  42.   upon the availability of upper memory.  It will automatically stop moving
  43.   data when it determines that memory would be fragmented if the move were
  44.   completed.
  45.  
  46.   Finally, a command line mode is provided to control Windows support, and
  47.   check and report on the status of the high memory area reserved for
  48.   COMMAND.COM.  Version 2.0 moves the Master Environment moving feature
  49.   into a separate program, see ENVIMAX.DOC.
  50.  
  51. ================================================================================
  52.  
  53. (Requirements)::
  54.  
  55.         * Requires MS-DOS Version 3.10 or better
  56.         * Now supports DR-DOS 6.0
  57.           
  58. ================================================================================
  59.  
  60. (Installation)::
  61.  
  62.         (CONFIG.SYS)::
  63.  
  64.         Installation of DOSMAX.EXE requires modifying the contents of
  65.         your CONFIG.SYS file.
  66.  
  67. (Generic Configuration)::
  68.  
  69.         This configuration should work and be the most efficient in 95%
  70.         of all configurations.  For a few real world examples see
  71.         EXAMPLES.DOC
  72.        
  73.         DOS=HIGH[,UMB]                    (DOS 5.x or 6.x only)
  74.         REM DEVICE=STOPMAX.SYS [options]  (Stops kernel from loading in HMA)
  75.         DEVICE=(xms/umb memory manager)
  76.         DEVICE=DOSMAX.EXE [options]       (DOSMAX loads high automatically)
  77.         SHELL=SHELLMAX.COM COMMAND.COM /P
  78.         BUFFERS=20
  79.         FILES=40
  80.         LASTDRIVE=Z
  81.  
  82.         For DESQView users, it is recommended that the DEVICE=STOPMAX.SYS is
  83.         installed.  This enables DOSMAX's kernel moving feature.
  84.  
  85.         DOS 5.x and 6.x users should configure DOS to load high into the
  86.         HMA.  The UMB parameter is optional, since both DOS 5.x and 6.x
  87.         upper memory management and XMS upper memory blocks are supported.
  88.  
  89.         DOS=HIGH[,[UMB][NOUMB]] (Both DOS UMB's and XMS UMB's supported)
  90.  
  91.         Insert a DEVICE= line for DOSMAX.EXE in your config.sys.  Ver. 1.5
  92.         of DOSMAX recommended that DOSMAX be loaded before the XMS and UMB
  93.         memory manager, but DOSMAX should now be loaded after the XMS manager
  94.         (DOSMAX will automatically load itself high if UMB's are available
  95.         or you may use your memory manager's device loader).  Version 1.7
  96.         provided another way to ensure that the DOS 5.0 or above kernel
  97.         is moved into a UMB by DOSMAX.  The driver STOPMAX.SYS is inserted
  98.         "before" the XMS manager and DOSMAX is inserted "after" the XMS
  99.         manager (see STOPMAX.DOC).
  100.  
  101.         Version 2.0 now requires that STOPMAX.SYS is used to stop DOS from
  102.         loading into the HMA, support for /B+,/I+ and /V+ have been removed
  103.         from DOSMAX.EXE because these options caused confusion.
  104.  
  105.         Version 2.0 now requires /C+ to enable the upper memory support
  106.         option for COMMAND.COM.  This option was provided by default in
  107.         earlier versions and was disabled with /A0.  Normally you will
  108.         want to use SHELLMAX.COM to load all of COMMAND.COM into upper
  109.         memory (see SHELLMAX.DOC).  The /A0 option also caused confusion.
  110.  
  111.         REM DEVICE=STOPMAX.SYS [options]
  112.         DEVICE=(Memory Manager)
  113.         DEVICE=DOSMAX.EXE [/C:+][other options]
  114.  
  115.         One advantage of using DOSMAX.EXE, is that the STACKS=, BUFFERS=,
  116.         FCBS=, FILES=, and LASTDRIVE= parameters may be configured normally.
  117.  
  118.         STACKS=9,256            (or =0,0 or default 9,128...etc...)
  119.         BUFFERS=XX[,YY]         (XX = # of buffers, YY = lookahead cache)
  120.         FCBS=XX,YY              (XX = # of FCBS, YY = # of protected FCBS)
  121.         FILES=NN                (NN = # of system files)
  122.         LASTDRIVE=Z             ( Z = Last reserved drive)
  123.  
  124.         Version 2.0 of DOSMAX now allows INSTALL=, you no longer have to
  125.         remove these statements from your CONFIG.SYS.
  126.  
  127.         By default, DOSMAX.EXE Version 2.0 will not generate report messages
  128.         for each successful operation or event, unless you enable the report
  129.         with /R+.  You must also use /P+ to pause after this report.  Use
  130.         /R+ and /P+ until you are satisfied with the configuration then
  131.         remove these switches.
  132.  
  133.         DEVICE=DOSMAX.EXE /R+ /P+ 
  134.         or DEVICE=DOSMAX.EXE /REPORT:+ /PAUSE:+ 
  135.  
  136.         (AUTOEXEC.BAT)::
  137.  
  138.         It is not necessary to modify the contents of AUTOEXEC.BAT, but
  139.         since DOS data creators like FILES and BUFFERS are no longer
  140.         required, it is recommended that these lines be removed
  141.  
  142.         REM BUFFERS=XX          (Remove FILE and BUFFER creator TSR's)
  143.         REM FILES=NN
  144.  
  145.         (From the Command Line)::
  146.  
  147.         By default, DOSMAX.EXE, invoked from the command line, will generate
  148.         a message for each successful operation or event.  The display will
  149.         not pause in the command line mode unless the /P+ switch is used.
  150.         After you are satisfied with the configuration and you want to disable
  151.         the REPORT feature, use:
  152.  
  153.         DOSMAX.EXE /R-
  154.  
  155.         All switch options and possible messages for DOSMAX are detailed
  156.         below:
  157.  
  158. (Loading DOSMAX High)::
  159.  
  160.         You may load DOSMAX high with your high memory loader, but DOSMAX
  161.         will load itself high if upper memory is available.  To prevent
  162.         DOSMAX from loading itself high, use /X- or load it before the
  163.         memory manager is installed.
  164.  
  165. (Moving the DOS kernel into a UMB)::
  166.  
  167.         DOSMAX to move the DOS 5.0 or above kernel to a UMB, then DOS
  168.         must not be in the HMA when DOSMAX loads.  If you desire to stop
  169.         the kernel from moving into the HMA, then STOPMAX must be loaded
  170.         before the xms/umb memory manager, so that the DOS kernel is not
  171.         high when DOSMAX initializes.  If DOS is already in the HMA (not
  172.         using STOPMAX), then Verision 2.0 now detects this condition and
  173.         low memory is optimized correctly.
  174.  
  175. ================================================================================
  176.  
  177. (Syntax)::
  178.  
  179.         The only thing to remember about syntax for the command line is
  180.         that just about anything works.  What this means is that you
  181.         should be able to type in the options on the command line the
  182.         way they make sense to you.
  183.  
  184.         To illustrate this point, the following command line example
  185.         is mutated several different ways.
  186.  
  187.         DEVICE=DOSMAX.EXE /H+ /R- /P- /A0
  188.         DEVICE=DOSMAX.EXE -H+ -R- -P- -A0
  189.         DEVICE=DOSMAX.EXE H R- P- A0
  190.         DEVICE=DOSMAX.EXE HR-P-A
  191.         DEVICE=DOSMAX.EXE -H+-R-P-A
  192.  
  193.         ... and so on.
  194.  
  195.         DOSMAX 1.9 and above adds optional full word syntax.  The new
  196.         syntax looks like this:
  197.  
  198.         DEVICE=DOSMAX.EXE /ALLOWHI:+ /REPORT:- /PAUSE:- /AVAIL4A=0
  199.         DEVICE=DOSMAX.EXE -ALLOWHI:+ -REPORT:- -PAUSE:- -AVAIL4A=0
  200.         DEVICE=DOSMAX.EXE ALLOWHI REPORT:- PAUSE:- AVAIL4A=0
  201.         DEVICE=DOSMAX.EXE ALLOWHIREPORT-PAUSE-AVAIL4A
  202.         DEVICE=DOSMAX.EXE -ALLOWHI+-REPORT-PAUSE-AVAIL4A
  203.  
  204.         Obviously when using full words, it is easier to keep the words
  205.         separated so that is clear to read.  An optional [:] or [=] may be
  206.         used for switches (i.e. ALLOWHI:+ or AVAIL=0).  These optional
  207.         delimiters are used interchangeably and can also be used with the
  208.         single letter switches.  Remember to check your spelling because the
  209.         single letter interface is still intact.
  210.  
  211. ================================================================================
  212.  
  213. (Switch Options)::
  214.  
  215.         The following list of switch options is organized by:
  216.  
  217.          - Control of DOSMAX Reports (/R:/P:/N:)
  218.          - Control of DOSMAX Operation (/M=/H:/L:/A=/S:/U=)
  219.            - Setting the Memory Strategy (/M=)
  220.            - Control the Location of the DOS Kernel (/H:/L:)
  221.            - Control COMMAND.COM Split (/C:/A=)
  222.            - Control EMS Usage (/Q:)
  223.            - Control Sub-Segment Relocation (/S:)
  224.            - Control Stack Interrupts (/U=)
  225.            - Control DOSMAX Automatic UMB installation (/X:)
  226.            - Response file for DOSMAX
  227.  
  228.   (Control of DOSMAX Reports)::
  229.  
  230.         (REPORT)::      R[+ or -]        (toggle:  default -)
  231.  
  232.         Use /R+ or /REPORT:+ to enable the report of additional status
  233.         messages.
  234.  
  235.         (PAUSE)::       P[+ or -]        (toggle:  default -)
  236.  
  237.         Use /P+ or /PAUSE:+ to enable a pause after the execution of
  238.         DOSMAX.EXE.
  239.  
  240.         (NOPAUSE)::     N[+ or -]        (toggle:  default -)
  241.  
  242.         Use /N+ or /NOPAUSE:+ to never pause after the report, even if
  243.         there are errors.  This switch can be used if your configuration
  244.         generates a warning or error message which you choose to ignore.
  245.  
  246.   (Control of DOSMAX Operation)::
  247.  
  248.     (Setting the Memory Strategy)::
  249.  
  250.         (STRATEGY)::    Mn               (value=  n = 0)   
  251.  
  252.         Use /Mn or /STRATEGY=n to control the memory allocation strategy
  253.         which DOSMAX uses to allocate upper memory blocks.  The default
  254.         strategy is is First Fit (/M0).  This means that DOSMAX will use the
  255.         first upper memory block returned by the XMS manager.  The other
  256.         available options are Best Fit (/M1) and Last Fit (/M2).  Best Fit
  257.         uses the block which most closely matches the size needed, and
  258.         Last Fit uses the last block big enough to handle the request.
  259.         Values other than 0, 1, or 2 are ignored and the previous setting
  260.         of this option is used.
  261.  
  262.         (SYSFSIZE)::    Fnn              (value=  nn = 59 )
  263.  
  264.         Use /Fnn or /SYSFSIZE=nn to set the System File Size:  The upper
  265.         limit of nn is 61 in device mode, and 82 in command line mode.
  266.         The lower limit is 40.  Values other than the MS-DOS 4.0 - 6.0
  267.         System File Size of 59 are only allowed if the true MS-DOS version
  268.         is greater than 5.0.  The /Fnn switch is only necessary if DOSMAX
  269.         can't determine the System File Size automatically.
  270.  
  271.     (Control the Location of the DOS Kernel)::
  272.  
  273.         (ALLOWHI)::     H[+ or -]        (toggle:  default -)
  274.  
  275.         Use /H+ or /ALLOWHI:+ to allow DOS to load into the HMA anyway.
  276.         This switch is now obsolete.  DOSMAX now detects the location of
  277.         the kernel and automatically determines the proper setting of this
  278.         switch.  It is for backward-compatability and debugging purposes only.
  279.  
  280.         (FORCELOW)::    L[+ or -]        (toggle:  default -)
  281.  
  282.         Use /L+ or /FORCELOW:+ to allocate DOS code block in low memory.
  283.         This switch is now obsolete.  DOSMAX now detects the location of
  284.         the kernel and automatically determines the proper setting of this
  285.         switch.  It is for backward-compatability and debugging purposes only.
  286.  
  287.     (Control COMMAND.COM Split)::
  288.  
  289.         (CMDALLOC)::    C[+ or -]        (toggle:  default -)
  290.         
  291.         Use /C:+ or /CMDALLOC:+ to enable the /AVAIL4A=nnnnn parameter and
  292.         the function which splits COMMAND.COM from DOS 5.0 in half.  This
  293.         is for those users who chose not to load COMMAND.COM into a UMB.
  294.  
  295.         (AVAIL4A)::     Annnnn           (value=  nnnnn = 2080)
  296.  
  297.         Use /Annnnn or /AVAIL4A=nnnnn to set the number of bytes reserved
  298.         in upper memory for COMMAND.COM and other DOS 5.0 and above programs
  299.         which have the capability of moving a portion of themselves into the
  300.         HMA.  These programs use INT 2Fh Function 4Ah to allocate a fixed
  301.         number of bytes from the HMA.  DOSMAX has the capability of emulating
  302.         this function in high memory.  By default, DOSMAX reserves 2080 bytes,
  303.         which is the space needed to shrink COMMAND.COM.  To reserve more
  304.         memory, increase this value.
  305.  
  306.         The command line mode of DOSMAX reports the size and allocation
  307.         status of this area.  If the amount allocated or requested is not
  308.         equal to the amount reserved, DOSMAX will report what the proper
  309.         value should be.  Users of replacement shells like 4DOS.COM from
  310.         J.P. Software, should disable this option with /A0.  Disabling the
  311.         option or using the report feature of the command line mode to
  312.         set the exact amount of memory required, is recommended since
  313.         INT 21h 3306h (Get True Ver.), which is also hooked by DOSMAX,
  314.         must return with a bit set which indicates that DOS is in the HMA
  315.         until the amount of memory reserved is completely exhausted.
  316.  
  317.     (Control EMS Usage)::
  318.  
  319.         (LOADEMS)::      Q[+ or -]       (toggle:  default -)
  320.  
  321.         Use /Q:- or /LOADEMS:- to disable the default action of DOSMAX
  322.         which allocates EMS to store the .EXE module until the DOS resources
  323.         are built and ready to move.  DOSMAX will still be able to function,
  324.         but disk compression schemes may cause confusion if DOSMAX.EXE is
  325.         not on both the compressed and uncompressed drives.
  326.  
  327.     (Control Sub-Segment Relocation)::
  328.  
  329.         (SKIPSUB)::      S[+ or -]       (toggle:  default -)
  330.  
  331.         Use /S+ or /SKIPSUB:+ to tell DOSMAX to not move sub-segments
  332.         data types.  The switch is provided mainly for diagnostic purposes,
  333.         but may be useful when not enough high memory is available to
  334.         move both the DOS code block and the sub-segments, or if
  335.         you find this feature does not work in your configuration.
  336.  
  337.     (Control Stack Interrupts)::
  338.  
  339.         (UNHOOK)::       Unn             (value=  default none)
  340.  
  341.         Use /Unn or /UNHOOK=nn to tell DOSMAX that INT nn is to be
  342.         "unhooked" from DOS STACKS when the STACKS are moved high.  This
  343.         switch is useful for controlling which hardware interrupts are
  344.         routed through the DOS STACKS mechanism.  Microsoft's EMM386 may
  345.         cold-boot or lock-up if STACKS are present and moved to high memory,
  346.         CTRL-ALT-DEL is pressed (warm-boot), and INT 09h is hooked by DOS
  347.         STACKS.  The DOSMAX option /U09 maybe used to work-around this
  348.         problem.  The interrupt number is in Hex-Notation and the valid
  349.         values are the hardware interrupts 02, 08, 09, 0A, 0B, 0C, 0D, 0E,
  350.         70, 72, 73, 74, 76, & 77.  Invalid interrupt numbers are ignored.
  351.         Multiple invocations of this switch are permissable.
  352.         
  353.     (Control DOSMAX Automatic UMB installation)::
  354.  
  355.         (HILOAD)::       X[+ or -]       (toggle:  default +)
  356.  
  357.         Use /X- to stop DOSMAX.EXE from loading itself high if upper
  358.         memory is available.  This switch is intended for diagnostic
  359.         purposes only, since if you use your memory manager to load
  360.         DOSMAX.EXE high this condition is detected and no second upper
  361.         memory block will be allocated.
  362.  
  363.   (Response file for DOSMAX)::
  364.  
  365.         Parameters for DOSMAX may be read from a response file by using the
  366.         @pathname syntax:
  367.         
  368.         DOSMAX.EXE @RESPONSE.FIL
  369.  
  370.         Response files may be commented by using a ";","#",or "*" character
  371.         before the comment.
  372.  
  373.         There is also a feature implemented for DOS 6.0 config menus.  If a
  374.         menu is configured for DOS 6.0, DOS puts the name of the effective
  375.         section in an environment variable.  This environment variable is
  376.         "CONFIG=."  You may optionally divide the response files into
  377.         sections, identified with the familiar [SECTION] syntax, where
  378.         "SECTION" is the name of the DOS 6.0 menu item selected.
  379.  
  380. (CONFIG.SYS Line)::
  381.  
  382.         DEVICE=DOSMAX.EXE [/-][R+P+N+L+H+FnnC+AnnnnMnUnnQ+X-]
  383.  
  384.         device default: /R-/P-/N-/X+/C-/M1
  385.  
  386.         *  disable Report status messages
  387.         *  don't Pause after report
  388.         *  Pause on errors or warnings
  389.         *  use the Best Fit memory allocation strategy
  390.         *  Load DOSMAX high if upper memory available
  391.  
  392.         *  everything in square brackets "[]" is optional
  393.  
  394. ================================================================================
  395.  
  396. (Report Format)::
  397.  
  398.    DOSMAX.EXE :  Ver. 2.1, Copyright (1992,93) by Philip B. Gardner
  399.         ERROR :  (Error Messages)
  400.       WARNING :  (Warning Messages)
  401.        ADVICE :  (Advisory Messages)
  402.               :  (Report Messages)
  403.               :  (Allocation Status)
  404.         PAUSE :  Press any key to continue... 
  405.  
  406. (Report Note)::
  407.  
  408.         DOSMAX.EXE may be replaced by DOSMAX.SYS or DOSMAX.OVL.  The
  409.         exact name of the module is dependent upon the circumstances
  410.         under which DOSMAX.EXE is executed.  This detail is important
  411.         only as diagnostic information.
  412.         
  413. ================================================================================
  414.  
  415. (Error Messages)::
  416.  
  417.         MS-DOS version 3.10 or above is required
  418.         DOS version is not compatible
  419.         An 80186 processor or better is required
  420.         Device not found, or version mismatch
  421.         Not enough memory to relocate
  422.         Unable to execute, can't open overlay 
  423.         Unable to execute, not enough memory for overlay 
  424.  
  425. ================================================================================
  426.  
  427. (Warning Messages)::
  428.  
  429.         Unknown option on the command line
  430.         Unknown option on line #0000
  431.         Extra characters on command line
  432.         Line length overflow at line #0000
  433.         INT 00h is not pointing into STACKS
  434.         DOS Sub-Segment list is unmoveable
  435.         System File Size not determined or out of range
  436.         Unable to validate System Data area
  437.         Couldn't validate DR-DOS data area
  438.         Couldn't size System File Table
  439.         Couldn't size System FCB Table
  440.         Couldn't trace Buffer Chain
  441.         Couldn't find Lastdrive Array
  442.         Unable to calculate DR-DOS kernel control constants
  443.         Unable to calculate kernel control constants
  444.  
  445. ================================================================================
  446.  
  447. (Advisory Messages)::
  448.  
  449.         Set STACKS=0,0 in CONFIG.SYS
  450.         Possible INSTALL= in CONFIG.SYS
  451.         Try using /Fnn switch
  452.         For maximum efficiency use /A00000
  453.  
  454. ================================================================================
  455.  
  456. (Report Messages)::
  457.  
  458.         Processing option file XXXXXXXX.XXX
  459.     Effection section is [XXXXXXXX]
  460.         DOS System forced low
  461.         DOS System in HMA
  462.         DOS System not in HMA
  463.         DOS Sub-Segments skipped
  464.         DOS Sub-Segments skipped
  465.         DOS Sub-Segments too small, staying resident
  466.         System File Size set to 00
  467.         Unhooked DOS STACKS INT 00h
  468.         Moved 00000 bytes of DOS data high
  469.         Found 00000 bytes allocated of 00000 bytes
  470.         Freed EMS handle 0
  471.  
  472. ================================================================================
  473.  
  474. (Allocation Status)::
  475.  
  476.         SYSTEM   moved to 0000
  477.         Not enough Hi Memory for SYSTEM  
  478.         INSTALL  moved to 0000
  479.         Not enough Hi Memory for INSTALL
  480.         STACKS   moved to 0000
  481.         Not enough Hi Memory for STACKS
  482.         DRDATA   moved to 0000
  483.         Not enough Hi Memory for DRDATA
  484.         LASTDRIV moved to 0000
  485.         Not enough Hi Memory for LASTDRIV
  486.         BUFFERS  moved to 0000
  487.         Not enough Hi Memory for BUFFERS 
  488.         WKBUFFER moved to 0000
  489.         Not enough Hi Memory for WKBUFFER
  490.         FCBS     moved to 0000
  491.         Not enough Hi Memory for FCBS    
  492.         FILES    moved to 0000
  493.         Not enough Hi Memory for FILES   
  494.         COMMAND  memory reserved at 0000
  495.         Not enough Hi Memory for COMMAND
  496.         DOSMAX   located at 0000
  497.         Not enough Hi Memory for DOSMAX  
  498.  
  499. ================================================================================
  500.  
  501. (Sub-Segment List)::
  502.  
  503.         The Sub-Segment List is searched from bottom to top for a block
  504.         of moveable sub-segments, then moved in reverse order.
  505.  
  506.         The following chart attempts to show what can and cannot be moved
  507.         with DOSMAX:
  508.  
  509.                         Sub-Segment Type                Not Moved  Moved
  510.         ----------------------------------------------- ---------  -----
  511.         "D"        DEVICE DRIVER                            x 
  512.         "E"        DEVICE DRIVER APPENDAGE                  x
  513.         "I"        IFS (Installable File System) DRIVER     x
  514.         "F"        FILES=                                            x
  515.         "X"        FCBS=                                             x
  516.         "C"        BUFFERS /X Option (EMS workspace area)            x
  517.         "B"        BUFFERS=                                          x
  518.         "L"        LASTDRIVE=                                        x
  519.         "S"        STACKS=                                           x
  520.         "T"        INSTALL=                                          x
  521.  
  522. ================================================================================
  523.  
  524. (Changes)::
  525.  
  526.     (Version 1.1)::
  527.  
  528.     (1) Fixed problem not cleaning up properly, when DOS goes to HMA
  529.         anyway, (only /V+ switch, and some XMS Managers).
  530.  
  531.     (2) Fixed problem that occurred if no XMS UMB's available, and DOS 5
  532.         UMB's tried, and if no DOS UMB's available either (not just not
  533.         enough), memory was allocated from low memory, even though
  534.         allocation strategy was set to try UMB's only.  Made sure UMB
  535.         Link state was set properly.
  536.  
  537.     (3) Added support for DOS Versions 3.10 - 3.31 and DOS Version 4.x
  538.  
  539.     (4) Improved File Size determination algorithum
  540.  
  541.     (Version 1.2)::
  542.  
  543.     (1) Improved detection of DOS=LOW, and reduced the possibility of
  544.         an errant "Should be the first DEVICE= in CONFIG.SYS" message.
  545.  
  546.     (Version 1.3)::
  547.  
  548.     (1) Added support for INT 2Fh, Function 4Ah, so that COMMAND.COM
  549.         (and others??) can move a portion of their code to high memory
  550.         too.  For COMMAND.COM users with DOS 5.0, this saves 2.1k of
  551.         low memory.  Added the /Annnn switch to support this feature,
  552.         plus an allocation status check for the command line mode.
  553.         4DOS users should disable this feature with option /A0.
  554.  
  555.     (Version 1.4)::
  556.  
  557.     (1) Added capability to find and move the master environment for
  558.         COMMAND.COM users.  Also implemented a special test mode with
  559.         the /T+ option, which verifies that the master environment
  560.         has been found and that it is moveable.  This test mode should
  561.         only be necessary for diagnostic purposes.
  562.  
  563.     (Version 1.5)::
  564.  
  565.     (1) Added base 10 number display for /A parameter and changed
  566.         System File Size message to base 10.
  567.  
  568.     (Version 1.6)::
  569.  
  570.     (1) Added /Mn option, to allow general control of memory allocation
  571.         strategy.  First Fit = 0, Best Fit = 1, and Last Fit = 2 were
  572.         implemented for both DOS 5 UMB's, and XMS UMB's.
  573.  
  574.     (2) Added check for a 186 processor or better (allows V20/V30).
  575.  
  576.     (3) DOSMAX will now move STACKS, so setting STACKS=0,0 is not
  577.         necessary.  In most cases though, STACKS=0,0 is still a good
  578.         idea.  Windows 3.1 supposed requirement for STACKS=9,256 is
  579.         not really necessary in most cases.
  580.  
  581.     (4) Removed the check for an XMS manager and a check for extended
  582.         memory.  This allows machines without extended memory to use
  583.         UMB providers, which do not require extended memory, with DOSMAX.
  584.         These checks were redundant since if DOS is in the HMA when
  585.         DOSMAX loads, the message "DOS is HIGH already" is reported.
  586.         It is still possible to use DOSMAX, but the /H switch must be
  587.         used if DOS is HIGH first.
  588.  
  589.     (5) Added /I option which inhibits HIMEM.SYS from loading DOS HIGH.
  590.         This switch is not very useful if HIMEM.SYS is not loaded high,
  591.         since HIMEM will be about 30k in size.  This switch is intended
  592.         for users who load HIMEM high after their UMB provider is installed.
  593.  
  594.     (6) Changed default WINDOWS high file support method to a new method
  595.         which uses 2 system file handles, but no low memory, so it works
  596.         when DOSMAX is loaded high.  The new method may be disabled with
  597.         /Y-, or /W+ (/W+ enables the old method since it was proven to work
  598.         and the code was already written).  The new method cannot be
  599.         enabled or disabled from the command line.
  600.  
  601.     (7) Now supporting separate program DOSM86.EXE.  This program is 
  602.         functionally identical to DOSMAX.EXE, but is compiled to work
  603.         on 8086/8088 processors also.  I have learned that there are
  604.         8086/8088 machines which can be configured with High Memory
  605.         using some High Memory Managers, and this variation will make
  606.         it possible for those users to put DOS in a UMB even though
  607.         there is no HMA.  DOSM86.EXE requires 32 more bytes of memory.
  608.  
  609.     (8) Fixed high loading so it really works...Also added an automatic
  610.         move to high memory of DOSMAX, if UMB's are available via DOS
  611.         or the XMS manager.  If there is some reason you don't want
  612.         DOSMAX loaded high when loaded after UMB's are available then
  613.         use /X- to stop it.  If DOSMAX is high, then it takes 272 bytes,
  614.         because extra code was needed to securely find and identify
  615.         the DOSMAX stub in memory.
  616.  
  617.     (9) Fixed a problem which hung DOSMAX after loading high if DOS was
  618.         not in the HMA yet and /V+ switch not used.
  619.         
  620.    (10) Changed order of first 5 handles in new windows support, and
  621.         enhanced error checking to only warn when support will not
  622.         work.  The new order maintains the AUX CON order and seems 
  623.         more compatible.
  624.  
  625.    (11) Added routine to stop "Incompatible DOS" message if loaded high
  626.         with a "device loader."  DOSMAX will now load high with a
  627.         device loader like LOADHI.SYS or HIGHDRVR.SYS
  628.  
  629.    (12) Try DOS high memory allocation even if NO XMS manager present.
  630.         This was necessary for PC's which don't have extended memory,
  631.         and don't even load an XMS manager (UMB_DRVR creates DOS high
  632.         memory and disappears).
  633.  
  634.    (13) Fixed DOSMAX not running second time if loaded high with LOADHI.
  635.  
  636.    (14) Fixed DOSMAX not moving anything high (sometimes) if loaded
  637.         high by any device loader.  I broke this in fix (13).
  638.  
  639.    (15) Added /B+ option which will stop DOS from going to the HMA by
  640.         patching the DOS initilization code in memory.  This method
  641.         works no matter which memory manager is in use or how it is
  642.         configured.  It also requires no resident memory.
  643.  
  644.     (Version 1.7)::
  645.  
  646.     (1) Added /Unn option to tell DOSMAX to unhook hardware INT nn from
  647.         DOS STACKS if the STACKS are present and moved.  At the time
  648.         which DOSMAX moves the STACKS it is safe to restore the interrupt
  649.         to the pre-STACKS value.  This switch was added as a work-around
  650.         to a warm-reboot problem in EMM386.EXE when STACKS are high.  To
  651.         fix the warm-reboot problem use /U09.  The value is in Hex-Notation.
  652.  
  653.     (2) Fixed DOSMAX not removing remnants of the sub-segments low when
  654.         the size of the DOS data area should have been 0.  This occurred
  655.         when using a memory manager with no code low, no drivers low, and
  656.         DOS in a UMB.  Changed method of recording sub-segment movement.
  657.  
  658.     (3) Removed DOS Version 3.x use of new windows method, it worked, but
  659.         wasn't completely compatible.  Use FW3.BAT instead if your version
  660.         of DOS is higher then 3.31 (rare).
  661.  
  662.     (4) Move master environment function now sets the MCB owner of the new,
  663.         high environment back the primary shell.  This corrects a minor
  664.         incompatiblity.
  665.  
  666.     (Version 1.8)::
  667.  
  668.     (1) Added specific support for 386MAX.  The high sub-segments and other
  669.         DOSMAX managed data are now labeled using a method which automatically
  670.         detects and adjusts to 386MAX's method of UMB management.
  671.  
  672.     (Version 1.9)::
  673.  
  674.     (1)  Reorganized code to enable an overlay method of module selection
  675.          to automate processor selection and split up .SYS and .EXE modules
  676.          to reduce the initialization memory to minimum.
  677.  
  678.     (2)  DOSMAX now automatically detects the processor type and chooses
  679.          separate code modules if appropriate.  The 186 processor require-
  680.          ment of previous versions is no longer applicable.
  681.  
  682.     (3)  Added optional full word syntax to argument parser.  The old style
  683.          single letter switch interface is still intact.  The switch lists
  684.          now show the optional word with the switch.
  685.  
  686.     (4)  Corrected problem with DOS 3.1 - 3.3 files which failed for some file
  687.          settings (i.e. FILES=20 failed).
  688.  
  689.     (5)  DOSMAX updated for DOS 6.0.  Corrected a coding error while moving
  690.          buffers.
  691.  
  692.     (6)  Changed default setting of /E switch.  To move the master environment
  693.          high from the command line or AUTOEXEC, now use /E+.
  694.  
  695.     (Version 2.0)::
  696.  
  697.     (1)  Added support for INSTALL=, it is no longer necessary to remove
  698.          INSTALL= from the CONFIG.SYS.
  699.  
  700.     (2)  Removed /B+,/V+, and /I+ options.  You must now use STOPMAX.SYS to
  701.          prevent DOS from moving into the HMA.  The parameters were causing
  702.          confusion.
  703.  
  704.     (3)  /H and /L are no longer necessary and you can use DOS=HIGH or DOS=LOW
  705.          as you deem necessary.
  706.  
  707.     (4)  Added /C+ switch to enable the COMMAND.COM split feature.  For most
  708.          users, /A0 was forgotten and only caused unecessary "Packed file
  709.          corrupt" messages and wasted space.  You may still use this feature,
  710.          but you must first enable it with /C+, since the default is now off.
  711.  
  712.     (5)  Moved /E+,/MASTERENV:+ into ENVIMAX.COM.  The triple mode of DOSMAX
  713.          confused people and many just didn't realize that DOSMAX could be
  714.          put into AUTOEXEC.BAT to move the master environment.
  715.  
  716.     (6)  Changed the Windows support method once again.  The /Y is gone (the
  717.          old high file support method) and /W+ now works from both the .SYS
  718.          and .EXE command lines.  This new method uses 256 bytes at 60:0 and
  719.          if this is a conflict, you must use FW4-6.BAT and FW3.BAT after
  720.          disabling the support with /W-.
  721.  
  722.     (7)  Added support for DRDOS 6.0.  See EXAMPLES.DOC.
  723.  
  724.     (8)  Added feature which preloads the .EXE portion of the DOSMAX into
  725.          EMS and improves ease of configuration for STACKER/SSTOR users.
  726.          Most of the time it is not necessary to duplicate DOSMAX.EXE on
  727.          both the compressed and uncompressed drives (unless EMS 4.0 is not
  728.          present).
  729.  
  730.     (9)  Added support for loading self high when DOS=UMB is configured
  731.  
  732.    (10)  Added option response file input with @filename.opt syntax
  733.  
  734.     (Version 2.1)::
  735.  
  736.     (1)  Fixed problem with finding DOS 6.0 CONFIG variable for machines
  737.          whose bios'es don't intialize memory properly.
  738.  
  739. ================================================================================
  740.